From: Andrew Cooper Date: Thu, 22 Jan 2015 11:45:13 +0000 (+0100) Subject: evtchn: reduce the size of the poll_mask where possible X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~3892 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks://%22/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22?a=commitdiff_plain;h=b52512634913459cbf1f183e5b7223f01db468bb;p=xen.git evtchn: reduce the size of the poll_mask where possible Use domain_max_vcpus(d) in preference to MAX_VIRT_CPUS when allocating the poll mask. This allows x86 HVM guests to have a poll mask of 128 bits rather than 8k bits. While changing this, use xzalloc_array() in preference to xmalloc_array() to avoid needing the subsequent call to bitmap_zero(). Signed-off-by: Andrew Cooper Acked-by: Jan Beulich --- diff --git a/xen/common/event_channel.c b/xen/common/event_channel.c index c0fbcea748..4a52f69ceb 100644 --- a/xen/common/event_channel.c +++ b/xen/common/event_channel.c @@ -1264,13 +1264,13 @@ int evtchn_init(struct domain *d) evtchn_from_port(d, 0)->state = ECS_RESERVED; #if MAX_VIRT_CPUS > BITS_PER_LONG - d->poll_mask = xmalloc_array(unsigned long, BITS_TO_LONGS(MAX_VIRT_CPUS)); + d->poll_mask = xzalloc_array(unsigned long, + BITS_TO_LONGS(domain_max_vcpus(d))); if ( !d->poll_mask ) { free_evtchn_bucket(d, d->evtchn); return -ENOMEM; } - bitmap_zero(d->poll_mask, MAX_VIRT_CPUS); #endif return 0;